package com.dailycodebuffer.springbootmongodb.controller;

import com.dailycodebuffer.springbootmongodb.collection.Product;
import com.dailycodebuffer.springbootmongodb.service.ProductService;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;


/**
 * 控制层
 *
 * @author makejava
 * @since 2025-01-04 00:23:42
 */
@RestController
@RequestMapping("/product")
@AllArgsConstructor
public class ProductController {

	private ProductService productService;

	/**
	 * 获取列表(分页)
	 */
	@GetMapping("/list")
	public Page<Product> list(Pageable page) {
		return productService.list(page);
	}

	/**
	 * 获取
	 */
	@GetMapping("/{id}")
	public Product get(@PathVariable("id") Integer id) {
		return productService.findById(id);
	}

	/**
	 * 添加
	 */
	@PostMapping("/add")
	public void add(@RequestBody Product product) {
		// 创建一个新的产品实例
		product.setId(1); // 注意：如果你让 MongoDB 自动生成 ID，这里不需要设置
		product.setBrand("Apple");
		product.setName("iPhone 12");
		product.setCategoryId("electronics");
		product.setBarCode("123456789012");
		product.setQuantityPerUnit("1 unit");
		product.setUnitPrice(new BigDecimal("999.99")); // 假设 unitPrice 是 BigDecimal 类型
		product.setUnitsInStock(100L);
		product.setUnitsSell(0);
		product.setUnitsTotal(100);
		product.setPhoto("path/to/photo.jpg");
		product.setPhotoUrl("http://example.com/path/to/photo.jpg");

		productService.save(product);
	}


	/**
	 * 修改
	 */
	@PostMapping("/update")
	public void update(@RequestBody Product product) {
		productService.save(product);
	}

	/**
	 * 删除
	 */
//	@PostMapping("/delete")
//	public void delete(String id) {
//		productService.deleteById(id);
//	}

}

